Web Scraping em Golang com Colly

Adélia Cruz
Neural Network Developer
04-Dec-2025

Web scraping é um método usado para extrair dados de sites. No Golang, a biblioteca Colly é uma ferramenta popular para web scraping devido à sua simplicidade e recursos poderosos. Este guia o levará por meio da configuração de um projeto Golang com o Colly, construção de um raspador básico, tratamento de cenários complexos de extração de dados e otimização dos seus raspadores com requisições concorrentes.
Configurando Seu Projeto em Golang
Antes de começar, certifique-se de que o Go está instalado no seu sistema. Inicialize seu projeto e obtenha o pacote Colly com os seguintes comandos:
bash
go mod init my_scraper
go get -u github.com/gocolly/colly
Isso configura o diretório do seu projeto e instala o pacote Colly.
Resgatar Seu Código de Bônus do CapSolver
Aumente seu orçamento de automação instantaneamente!
Use o código de bônus CAPN ao recarregar sua conta do CapSolver para obter um bônus extra de 5% em cada recarga — sem limites.
Resgatar agora no seu Painel do CapSolver
.
Construindo um Raspador Básico
Vamos criar um raspador básico para extrair todos os links de uma página específica do Wikipedia.
- Crie um novo arquivo
main.goe adicione o seguinte código:
go
package main
import (
"fmt"
"github.com/gocolly/colly"
)
func main() {
c := colly.NewCollector(
colly.AllowedDomains("en.wikipedia.org"),
)
c.OnHTML(".mw-parser-output", func(e *colly.HTMLElement) {
links := e.ChildAttrs("a", "href")
fmt.Println(links)
})
c.Visit("https://en.wikipedia.org/wiki/Web_scraping")
}
Este código inicializa um novo coletor do Colly restrito a en.wikipedia.org, em seguida, configura um callback para encontrar e imprimir todos os links dentro do div .mw-parser-output da página.
Raspagem de Dados de Tabela
Para tarefas mais complexas, como raspagem de dados de tabela e gravação em um arquivo CSV, você pode usar o pacote encoding/csv no Go:
- Estenda o
main.gocom o seguinte código para raspar dados de tabela:
go
package main
import (
"encoding/csv"
"log"
"os"
"github.com/gocolly/colly"
)
func main() {
fName := "data.csv"
file, err := os.Create(fName)
if err != nil {
log.Fatalf("Não foi possível criar o arquivo, err: %q", err)
return
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
c := colly.NewCollector()
c.OnHTML("table.wikitable", func(e *colly.HTMLElement) {
e.ForEach("tr", func(_ int, row *colly.HTMLElement) {
rowData := []string{}
row.ForEach("td", func(_ int, cell *colly.HTMLElement) {
rowData = append(rowData, cell.Text)
})
writer.Write(rowData)
})
})
c.Visit("https://en.wikipedia.org/wiki/List_of_programming_languages")
}
Este script raspa dados de tabela de uma página do Wikipedia e os escreve no data.csv.
Fazendo Requisições Concorrentes
Para acelerar a raspagem, você pode fazer requisições concorrentes usando goroutines do Go. Aqui está como você pode raspar múltiplas páginas concorrentemente:
go
package main
import (
"fmt"
"github.com/gocolly/colly"
"sync"
)
func scrape(url string, wg *sync.WaitGroup) {
defer wg.Done()
c := colly.NewCollector()
c.OnHTML("title", func(e *colly.HTMLElement) {
fmt.Println("Título encontrado:", e.Text)
})
c.Visit(url)
}
func main() {
var wg sync.WaitGroup
urls := []string{
"https://en.wikipedia.org/wiki/Web_scraping",
"https://en.wikipedia.org/wiki/Data_mining",
"https://en.wikipedia.org/wiki/Screen_scraping",
}
for _, url := range urls {
wg.Add(1)
go scrape(url, &wg)
}
wg.Wait()
}
Neste exemplo, definimos uma função scrape que recebe uma URL e um grupo de espera como argumentos. A função inicializa um coletor do Colly, configura um callback para imprimir o título da página e visita a URL. A função main cria um grupo de espera, itera sobre uma lista de URLs e inicia uma goroutine para cada URL para raspar concorrentemente.
Ao seguir estes passos, você pode construir raspadores robustos em Golang usando o Colly, lidar com diversos cenários de raspagem e otimizar o desempenho com requisições concorrentes. Para tutoriais mais detalhados e uso avançado, consulte recursos sobre raspagem de web com Go e Colly.
Outras Bibliotecas para Raspagem de Web em Go
Além do Colly, existem várias outras excelentes bibliotecas para raspagem de web no Golang:
- GoQuery: Esta biblioteca oferece uma sintaxe e um conjunto de recursos semelhantes ao jQuery, permitindo que você execute operações de raspagem de web com facilidade, da mesma forma que faria com o jQuery.
- Ferret: Um sistema de raspagem de web portátil, extensível e rápido projetado para simplificar a extração de dados da web. O Ferret se concentra na extração de dados usando uma linguagem declarativa única.
- Selenium: Conhecido por suas capacidades de navegador sem interface gráfica, o Selenium é ideal para raspar conteúdo dinâmico. Embora não tenha suporte oficial para Go, existe uma versão portada que permite seu uso em projetos Go.
Conclusão
A raspagem de web é uma habilidade poderosa e essencial para extrair dados de sites de forma eficiente. Usando o Golang e a biblioteca Colly, você pode construir raspadores robustos que lidam com diversos cenários de extração de dados, desde a coleta de links simples até a extração de dados de tabelas complexas e otimizar o desempenho com requisições concorrentes.
Neste guia, você aprendeu como:
- Configurar um projeto Golang com a biblioteca Colly.
- Construir um raspador básico para extrair links de uma página da web.
- Lidar com extração de dados mais complexos, como raspar dados de tabelas e salvá-los em um arquivo CSV.
- Otimizar seus raspadores fazendo requisições concorrentes.
Ao seguir estes passos, você pode criar raspadores de web eficazes e eficientes no Golang, aproveitando a simplicidade e os recursos poderosos do Colly. Para uso avançado e tutoriais detalhados, explore recursos adicionais sobre raspagem de web com Go e Colly.
Perguntas Frequentes
1. O Colly é adequado para iniciantes que estão aprendendo raspagem de web no Golang?
Sim. O Colly foi projetado para ser simples e amigável para iniciantes, oferecendo recursos poderosos como parsing de DOM, tratamento de requisições, callbacks e concorrência. Mesmo desenvolvedores novos em Go podem rapidamente construir um raspador funcional com apenas algumas linhas de código.
2. O Colly pode raspar conteúdo estruturado, como tabelas ou listas?
Absolutamente. O Colly permite a seleção de nós e atributos específicos do HTML, o que torna fácil extrair tabelas, listas, links e outros elementos estruturados. Você também pode armazenar os resultados diretamente em arquivos como CSV ou JSON usando as bibliotecas padrão do Go.
3. Como posso acelerar meu raspador web do Colly?
Você pode usar as goroutines do Go para processar múltiplas páginas em paralelo. Ao lançar raspadores concorrentemente e sincronizá-los com um grupo de espera, o desempenho da raspagem aumenta significativamente — especialmente para conjuntos de dados grandes ou tarefas de varredura de múltiplas URLs.
Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.
Mais

Lumiproxy: Proxy Premium para Scraping de Web e Coleta de Dados
Neste artigo, mostraremos o que é Lumiproxy e os serviços que eles oferecem.

Ethan Collins
12-Dec-2025

Tabproxy: Bom custo proxy residencial internacional
Neste artigo, vamos mostrar para você o que é o Tabproxy e os serviços que eles oferecem.

Ethan Collins
12-Dec-2025

O que são erros 402, 403, 404 e 429 em raspagem de web? Um Guia Completo
Domine o tratamento de erros de raspagem de web entendendo o que são os erros 402, 403, 404 e 429. Aprenda a corrigir o erro 403 Proibido, implementar soluções para o erro de limitação de taxa 429 e tratar o código de status Payment Required emergente 402.

Lucas Mitchell
12-Dec-2025

Proxies Residenciais IP2World: Soluções Líderes de Proxies IP Globais
Neste artigo, vamos mostrar o que é o IP2World e os serviços que eles oferecem.

Ethan Collins
12-Dec-2025

Web Scraping com Python: 2026 Melhores Táticas
Aprenda as principais táticas de raspagem de web em Python para 2026, incluindo lidar com conteúdo JavaScript dinâmico, gerenciar fluxos de autenticação, resolver CAPTCHAs, identificar armadilhas ocultas, simular comportamento humano, otimizar padrões de requisição e reduzir o uso de recursos em projetos de raspagem em larga escala.

Lucas Mitchell
12-Dec-2025

Web Scraping Sem Ser Bloqueado e Como Resolver o Captcha de Web Scraping
A raspagem de web tornou-se uma técnica popular para extrair dados de sites. No entanto, muitos sites utilizam medidas anti-raspagem, incluindo...

Lucas Mitchell
11-Dec-2025


.